#include "msg.h"

#ifndef ___H___CTL_CAR_HAND_MESSAGE____
#define ___H___CTL_CAR_HAND_MESSAGE____

//单个电机控制指令数据
typedef struct motion_data_{
		int motor;					//电机编号
		int postion;				//机械手电机转动到的位置
		int speed;					//机载手转动的速度
		int time;					//机械手电机转动到指定位置所需时间(单位毫秒)
}motion_data;

//执行动作组指令数据
typedef struct motion_group_data_{
		int	scene_code;				//动作场景编号，只用于标识，从0开始
		int	array_code;				//动作动编号0-127
		int		 speed;				//执行动作速度（-200 - 200），不指定则为100，即100%一培速，负数表示逆向运行动作
		int	start_code;				//指定启动动作组开始步编号，0-255
		int		  loop;				//是否循环运行
}motion_group_data;

typedef struct ctl_hand_msg_{
        msg_base * msg_;
		int user_id;				//发出指令的用户
		int cmd;					//对设备操作的指令CTL_CAR_CMD_CTL_MOTION_GROUP OR CTL_CAR_CMD_CTL_MOTION
		motion_group_data * group_data_;	
		int motion_size;
		motion_data  * motion_datas_;	
} ctl_hand_msg; 


ctl_hand_msg* create_ctl_hand_msg(char msgtype,int user_id,int cmd,int hand_size,motion_data* hands_data_,motion_group_data * group_data_);

int distory_ctl_hand_msg(ctl_hand_msg * msg);

int serialize_ctl_hand_msg(ctl_hand_msg * msg,char** out_msg,int* out_len);

int deserialize_ctl_hand_msg(char * msg,int len,ctl_hand_msg** out_msg);


#endif
